debian/patches/fix_gcc47_errors: fix various GCC 4.7 compilation
authorAaron M. Ucko <ucko@debian.org>
Fri, 11 May 2012 00:37:37 +0000 (00:37 +0000)
committerAaron M. Ucko <ucko@debian.org>
Fri, 11 May 2012 00:37:37 +0000 (00:37 +0000)
errors and warnings.  (Closes: #669679.)
* Explicitly qualify more dependent names originating in base templates.
* Directly #include headers as needed.
* Use modern syntax for making protected base members public.
* Add forward declarations as needed.

debian/changelog
debian/patches/fix_gcc47_errors [new file with mode: 0644]
debian/patches/series

index 773d8260847971bbc06a7b669cb21ced9215e791..55d259a9d05137f806743cebd3514364692bceac 100644 (file)
@@ -2,10 +2,18 @@ ncbi-blast+ (2.2.26-3) UNRELEASED; urgency=low
 
   * NOT YET RELEASED.
   
-  [Andreas Tille]
+  [ Aaron M. Ucko ]
+  * debian/patches/fix_gcc47_errors: fix various GCC 4.7 compilation
+    errors and warnings.  (Closes: #669679.)
+    - Explicitly qualify more dependent names originating in base templates.
+    - Directly #include headers as needed.
+    - Use modern syntax for making protected base members public.
+    - Add forward declarations as needed.
+  
+  [ Andreas Tille ]
   * debian/control: Modernize Vcs-* fields.
 
- -- Aaron M. Ucko <ucko@debian.org>  Thu, 10 May 2012 18:27:00 -0400
+ -- Aaron M. Ucko <ucko@debian.org>  Thu, 10 May 2012 20:37:32 -0400
 
 ncbi-blast+ (2.2.26-2) unstable; urgency=low
 
diff --git a/debian/patches/fix_gcc47_errors b/debian/patches/fix_gcc47_errors
new file mode 100644 (file)
index 0000000..ba6255e
--- /dev/null
@@ -0,0 +1,320 @@
+Subject: fix various GCC 4.7 compilation errors and warnings
+
+ * Explicitly qualify more dependent names originating in base templates.
+ * Directly #include headers as needed.
+ * Use modern syntax for making protected base members public.
+ * Add forward declarations as needed.
+
+Author: Aaron M. Ucko <ucko@debian.org>
+Last-Update: 2012-04-13
+--- a/c++/include/connect/ncbi_conn_stream.hpp
++++ b/c++/include/connect/ncbi_conn_stream.hpp
+@@ -259,7 +259,7 @@
+ class CConn_IOStreamSetReadTimeout : protected CConn_IOStreamSetTimeout
+ {
+ public:
+-    CConn_IOStreamSetTimeout::GetTimeout;
++    using CConn_IOStreamSetTimeout::GetTimeout;
+ protected:
+     CConn_IOStreamSetReadTimeout(const STimeout* timeout)
+@@ -289,7 +289,7 @@
+ class CConn_IOStreamSetWriteTimeout : protected CConn_IOStreamSetTimeout
+ {
+ public:
+-    CConn_IOStreamSetTimeout::GetTimeout;
++    using CConn_IOStreamSetTimeout::GetTimeout;
+ protected:
+     CConn_IOStreamSetWriteTimeout(const STimeout* timeout)
+--- a/c++/include/corelib/ncbiexpt.hpp
++++ b/c++/include/corelib/ncbiexpt.hpp
+@@ -852,7 +852,7 @@
+     exception_class(const exception_class& other) \
+        : base_class(other) \
+     { \
+-        x_Assign(other); \
++        this->x_Assign(other); \
+     } \
+ public: \
+     virtual ~exception_class(void) throw() {} \
+@@ -1172,7 +1172,7 @@
+         : TBase( other)
+     {
+         m_Errno = other.m_Errno;
+-        x_Assign(other);
++        this->x_Assign(other);
+     }
+     /// Destructor.
+--- a/c++/include/corelib/ncbimisc.hpp
++++ b/c++/include/corelib/ncbimisc.hpp
+@@ -39,6 +39,7 @@
+ #ifdef HAVE_SYS_TYPES_H
+ #  include <sys/types.h>
+ #endif
++#include <cstdlib>
+ #ifdef NCBI_COMPILER_ICC
+ // Preemptively pull in <cctype>, which breaks if we've already
+ // repointed is* at NCBI_is*.
+--- a/c++/include/corelib/ncbistl.hpp
++++ b/c++/include/corelib/ncbistl.hpp
+@@ -37,6 +37,7 @@
+ #include <common/ncbi_export.h>
++#include <algorithm>
+ // Get rid of some warnings in MSVC++
+ #if (_MSC_VER >= 1200)
+--- a/c++/include/corelib/ncbistr.hpp
++++ b/c++/include/corelib/ncbistr.hpp
+@@ -3039,7 +3039,7 @@
+         : TBase(other)
+     {
+         m_Pos = other.m_Pos;
+-        x_Assign(other);
++        this->x_Assign(other);
+     }
+     /// Destructor.
+--- a/c++/include/serial/impl/stltypes.hpp
++++ b/c++/include/serial/impl/stltypes.hpp
+@@ -412,6 +412,7 @@
+     typedef StlIterator TStlIterator;
+     typedef TypeInfoIterator TTypeInfoIterator;
+     typedef typename TTypeInfoIterator::TObjectPtr TObjectPtr;
++    typedef CStlClassInfoFunctions<Container> CParent;
+     static TStlIterator& It(TTypeInfoIterator& iter)
+         {
+@@ -437,7 +438,8 @@
+         }
+     static bool InitIterator(TTypeInfoIterator& iter)
+         {
+-            TStlIterator stl_iter = Get(iter.GetContainerPtr()).begin();
++            TStlIterator stl_iter
++                = CParent::Get(iter.GetContainerPtr()).begin();
+             if ( sizeof(TStlIterator) <= sizeof(iter.m_IteratorData) ) {
+                 void* data = &iter.m_IteratorData;
+                 new (data) TStlIterator(stl_iter);
+@@ -445,7 +447,7 @@
+             else {
+                 iter.m_IteratorData = new TStlIterator(stl_iter);
+             }
+-            return stl_iter != Get(iter.GetContainerPtr()).end();
++            return stl_iter != CParent::Get(iter.GetContainerPtr()).end();
+         }
+     static void ReleaseIterator(TTypeInfoIterator& iter)
+         {
+@@ -466,7 +468,7 @@
+     static bool NextElement(TTypeInfoIterator& iter)
+         {
+-            return ++It(iter) != Get(iter.GetContainerPtr()).end();
++            return ++It(iter) != CParent::Get(iter.GetContainerPtr()).end();
+         }
+     static TObjectPtr GetElementPtr(const TTypeInfoIterator& iter)
+         {
+@@ -503,7 +505,7 @@
+     
+     static bool EraseElement(TTypeInfoIterator& iter)
+         {
+-            TStlIterator& it = It(iter);
++            TStlIterator& it = CParent::It(iter);
+             Container* c = static_cast<Container*>(iter.GetContainerPtr());
+             it = c->erase(it);
+             return it != c->end();
+@@ -511,7 +513,7 @@
+     static void EraseAllElements(TTypeInfoIterator& iter)
+         {
+             Container* c = static_cast<Container*>(iter.GetContainerPtr());
+-            c->erase(It(iter), c->end());
++            c->erase(CParent::It(iter), c->end());
+         }
+     static void SetIteratorFunctions(CStlOneArgTemplate* info)
+@@ -542,7 +544,7 @@
+         }
+     static bool EraseElement(TTypeInfoIterator& iter)
+         {
+-            TStlIterator& it = It(iter);
++            TStlIterator& it = CParent::It(iter);
+             Container* c = static_cast<Container*>(iter.GetContainerPtr());
+             TStlIterator erase = it++;
+             c->erase(erase);
+@@ -551,7 +553,7 @@
+     static void EraseAllElements(TTypeInfoIterator& iter)
+         {
+             Container* c = static_cast<Container*>(iter.GetContainerPtr());
+-            c->erase(It(iter), c->end());
++            c->erase(CParent::It(iter), c->end());
+         }
+     static void SetIteratorFunctions(CStlOneArgTemplate* info)
+--- a/c++/include/serial/iterator.hpp
++++ b/c++/include/serial/iterator.hpp
+@@ -520,13 +520,13 @@
+     CTypeIteratorBase(TTypeInfo needType, const TBeginInfo& beginInfo)
+         : m_NeedType(needType)
+         {
+-            Init(beginInfo);
++            this->Init(beginInfo);
+         }
+     CTypeIteratorBase(TTypeInfo needType, const TBeginInfo& beginInfo,
+                       const string& filter)
+         : m_NeedType(needType)
+         {
+-            Init(beginInfo, filter);
++            this->Init(beginInfo, filter);
+         }
+     virtual bool CanSelect(const CConstObjectInfo& object)
+--- a/c++/include/util/bitset/bmfunc.h
++++ b/c++/include/util/bitset/bmfunc.h
+@@ -39,6 +39,13 @@
+ namespace bm
+ {
++bm::id_t bit_block_any_range(const bm::word_t* block,
++                             bm::word_t left,
++                             bm::word_t right);
++
++bm::id_t bit_block_calc_count_range(const bm::word_t* block,
++                                    bm::word_t left,
++                                    bm::word_t right);
+ /*!
+     @brief Structure with statistical information about bitset's memory 
+--- a/c++/include/util/bitset/bmserial.h
++++ b/c++/include/util/bitset/bmserial.h
+@@ -1381,7 +1381,7 @@
+     case set_block_arrgap: 
+     case set_block_arrgap_egamma:
+         {
+-              unsigned arr_len = read_id_list(dec, btype, this->id_array_);
++            unsigned arr_len = this->read_id_list(dec, btype, this->id_array_);
+             gap_len = gap_set_array(gap_temp_block_, this->id_array_, arr_len);
+             break;
+         }
+@@ -1390,7 +1390,7 @@
+             (sizeof(gap_word_t) == 2 ? dec.get_16() : dec.get_32());
+     case set_block_arrgap_egamma_inv:
+     case set_block_arrgap_inv:
+-        gap_len = read_gap_block(dec, btype, gap_temp_block_, gap_head);
++        gap_len = this->read_gap_block(dec, btype, gap_temp_block_, gap_head);
+         break;
+     default:
+         BM_ASSERT(0);
+--- a/c++/include/util/linkedset.hpp
++++ b/c++/include/util/linkedset.hpp
+@@ -268,10 +268,10 @@
+             pair<iterator, bool> ins = m_Container.insert(value);
+             if ( ins.second ) {
+                 if ( ins.first == begin() )
+-                    insertToStart(*ins.first);
++                    this->insertToStart(*ins.first);
+                 else {
+                     iterator prev = ins.first;
+-                    insertAfter(*--prev, *ins.first);
++                    this->insertAfter(*--prev, *ins.first);
+                 }
+             }
+             return ins;
+@@ -280,10 +280,10 @@
+     void erase(iterator iter)
+         {
+             if ( iter == begin() )
+-                removeFromStart(*iter);
++                this->removeFromStart(*iter);
+             else {
+                 iterator prev = iter;
+-                removeAfter(*--prev, *iter);
++                this->removeAfter(*--prev, *iter);
+             }
+             m_Container.erase(iter);
+         }
+@@ -422,10 +422,10 @@
+         {
+             iterator iter = m_Container.insert(value);
+             if ( iter == begin() )
+-                insertToStart(get(iter));
++                this->insertToStart(get(iter));
+             else {
+                 iterator prev = iter;
+-                insertAfter(get(--prev), get(iter));
++                this->insertAfter(get(--prev), get(iter));
+             }
+             return iter;
+         }
+@@ -433,10 +433,10 @@
+     void erase(iterator iter)
+         {
+             if ( iter == begin() )
+-                removeFromStart(get(iter));
++                this->removeFromStart(get(iter));
+             else {
+                 iterator prev = iter;
+-                removeAfter(get(--prev), get(iter));
++                this->removeAfter(get(--prev), get(iter));
+             }
+             m_Container.erase(iter);
+         }
+--- a/c++/include/util/rangemap.hpp
++++ b/c++/include/util/rangemap.hpp
+@@ -578,7 +578,7 @@
+             // get level
+             // insert element
+-            TSelectMapI selectIter = insertLevel(selectKey);
++            TSelectMapI selectIter = this->insertLevel(selectKey);
+             pair<TLevelMapI, bool> levelIns = selectIter->second.insert(value);
+             
+             pair<iterator, bool> ret;
+@@ -640,7 +640,7 @@
+             // insert element
+             iterator ret;
+             ret.m_Range = range_type::GetWhole();
+-            ret.m_SelectIter = insertLevel(selectKey);
++            ret.m_SelectIter = this->insertLevel(selectKey);
+             ret.m_SelectIterEnd = this->m_SelectMap.end();
+             ret.m_LevelIter = ret.m_SelectIter->second.insert(value);
+             return ret;
+--- a/c++/src/serial/stdtypes.cpp
++++ b/c++/src/serial/stdtypes.cpp
+@@ -720,7 +720,7 @@
+             if ( IsSigned() ) {
+                 // signed -> unsigned
+                 // check for negative value
+-                if ( IsNegative(value) )
++                if ( CParent::IsNegative(value) )
+                     ThrowIntegerOverflow();
+             }
+             if ( sizeof(value) > sizeof(result) ) {
+@@ -751,7 +751,7 @@
+                 // unsigned -> signed
+                 if ( sizeof(value) == sizeof(result) ) {
+                     // same size - check for sign change only
+-                    if ( IsNegative(result) )
++                    if ( CParent::IsNegative(result) )
+                         ThrowIntegerOverflow();
+                 }
+             }
+@@ -786,7 +786,7 @@
+             if ( IsSigned() ) {
+                 // signed -> unsigned
+                 // check for negative value
+-                if ( IsNegative(value) )
++                if ( CParent::IsNegative(value) )
+                     ThrowIntegerOverflow();
+             }
+             if ( sizeof(value) > sizeof(result) ) {
+@@ -817,7 +817,7 @@
+                 // unsigned -> signed
+                 if ( sizeof(value) == sizeof(result) ) {
+                     // same size - check for sign change only
+-                    if ( IsNegative(result) )
++                    if ( CParent::IsNegative(result) )
+                         ThrowIntegerOverflow();
+                 }
+             }
index 988f0acba54b9f3bebf56115af33b865427e94fd..5c737d2bf55f897f94903e7dedd33b5f5881c2d0 100644 (file)
@@ -3,3 +3,4 @@ legacy_rename_rpsblast
 fix_lib_deps
 no_multiarch_rpath
 wrong_path_to_touch.patch
+fix_gcc47_errors